/*******************************************************************************
* file  : rsa demo
* creat : apleilx
* data  : 2017/03/02
* @brief  	rsa 是一种非对称加密算法，加密解密KEY不同
*			此算法的应用传递过程：
*			A：生成密匙对，一个为公匙（用于传递），一个为私匙（自己持有）
*			B: 向A请求公匙
*			A：发送公匙给B
*			B: 用公匙加密数据发送给A
*			A：用私匙解密数据。用私匙加密数据发送给B
*			B: 用公匙解密数据
*******************************************************************************/
#include "common.h"
#include "crc_ext.h"
#include "mbedtls/rsa.h"
#include "mbedtls/entropy.h"
#include "mbedtls/ctr_drbg.h"
#include "bsp_api.h"


void ras_sim_key_fil_link(void);
void ras_sim_key_fil_unlink(void);

void ras_pub_enc(void);
void ras_priv_dec(void);
void ras_priv_enc(void);
void ras_pub_dec(void);
void ras_key_gen(void);

int rsa_gen_and_crypto(void);
int rsa_gen_signal(void);
int ras_key_sign(void);

void ras_pub_enc(void);
void ras_priv_sign(void);

void * rsa_src, *rsa_enc, *rsa_dec;

uu8 * rsa_key_N;
uu8 * rsa_key_E;
uu8 * rsa_key_D;
uu8 * rsa_key_P;
uu8 * rsa_key_Q;

//------------------------------------------------------------------------------
void rak_key_gen_test(void);

int rsa_key_gen( int argc, char *argv[] );

/*******************************************************************************
* @brief  des_demo.
* \param[in] none
* \retval: none
*******************************************************************************/
void rsa_demo(void)
{
	ras_sim_key_fil_link();
	
	
	rsa_src = malloc(2048);
	rsa_enc = malloc(2048);
	rsa_dec = malloc(2048);
	
	rsa_key_N= malloc(2200);
	rsa_key_E= malloc(16);
	rsa_key_D= malloc(1100);
	rsa_key_P= malloc(1100);
	rsa_key_Q= malloc(1100);
	
	//rsa_gen_and_crypto();
	
	ras_key_sign();
	
	rsa_gen_signal();
	//ras_pub_enc();
	ras_priv_sign();
	

	
	free(rsa_src);
	free(rsa_enc);
	free(rsa_dec);
	
	free(rsa_key_N);
	free(rsa_key_E);
	free(rsa_key_D);
	free(rsa_key_P);
	free(rsa_key_Q);
	
	ras_sim_key_fil_unlink();
}

